import type { UploadFile } from '@/types/user'
import axios from 'axios'

/**
 * 上传文件
 *
 * @template T 上传文件的类型，必须继承自UploadFile接口
 * @param path 上传文件的路径
 * @param formData 上传文件的数据，包含文件和其他表单数据
 * @returns Promise，解析为上传结果
 */
function upload<T extends UploadFile>(path: string, formData: T) {
  const params = new FormData()
  for (const key in formData) {
    if (key !== 'file') {
      params.append(key, formData[key] as string)
    } else {
      params.append('file', formData['file']!)
    }
  }
  console.log('formdata', params)
  return axios
    .post(path, params, {
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    })
    .then((res) => res.data)
}
export default upload
